home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 076-100 / 077 / samples / mattime.d < prev    next >
Text File  |  1995-03-13  |  912b  |  41 lines

  1. /* BEWARE, space required is SIZE * SIZE * 2 * sizeof(TYPE) bytes!!! */
  2.  
  3. int SIZE = 125;
  4. type TYPE = uint;
  5.  
  6. /* declare arrays as global, since they likely won't fit on the stack */
  7.  
  8. [SIZE, SIZE] TYPE a, b;
  9.  
  10. proc matrixMultiply([*, *] TYPE x; [*, *] TYPE y; [*, *] TYPE z)void:
  11.     TYPE i, j, k, sum;
  12.  
  13.     for i from 0 upto dim(z, 1) - 1 do
  14.     for j from 0 upto dim(z, 2) - 1 do
  15.         sum := 0;
  16.         for k from 0 upto dim(x, 2) - 1 do
  17.         sum := sum + x[i, k] * y[k, j];
  18.         od;
  19.         z[i, j] := sum;
  20.     od;
  21.     od;
  22. corp;
  23.  
  24. proc main()void:
  25.     TYPE i, j;
  26.  
  27.     writeln("Size of matrixes: ", SIZE, " x ", SIZE);
  28.     for i from 0 upto SIZE - 1 do
  29.     for j from 0 upto SIZE - 1 do
  30.         a[i, j] := i + j;
  31.     od;
  32.     od;
  33.     writeln("Starting square:");
  34.     matrixMultiply(a, a, b);
  35.     writeln("Squaring done. Diagonal of squared matrix is:");
  36.     for i from 0 upto SIZE - 1 do
  37.     write(b[i, i], ' ');
  38.     od;
  39.     writeln();
  40. corp;
  41.